//
//  main.m
//  08-类的扩展
//
//  Created by dllo on 16/7/13.
//  Copyright © 2016年 daming. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSObject+SayHello.h"
#import "NSString+FirstAndCapital.h"
#import "Student.h"
#import "BuyPerson.h"
int main(int argc, const char * argv[]) {
    /* 1⃣️类的扩展方式
       1. Category(类别, 类目, 分类)
         1> Category的创建
            通过Objective-C File创建
            会产生两个文件 .h .m
            文件名会以类+Category名
         2> Category的使用
            向对应文件中添加需要添加的方法
            引入到你对应要使用的位置
    */
    NSObject *objc = [[NSObject alloc] init];
    [objc sayHello];
    // 练习: 为NSString类扩展一个新的方法, 要求获取字符串的首字母并且将该首字母大写
    NSString *str = @"i have an iphone";
    str = [str getFirstAndCapital];
    NSLog(@"%@", str);
    
    /*2⃣️Extension
     延展, 一般定义在.m中, 其中声明一些私有的属性/方法
     保持.h的整洁
     */
    /*3⃣️delegate的设计模式
        举例: 海外代购
     */
    Student *stu = [[Student alloc] init];
    // 代购
    BuyPerson *per = [[BuyPerson alloc] init];
    // 6.设定代理人
    stu.delegate = per;
    [stu seeWeChat];
    
    return 0;
}
